services:
  _defaults:
    autowire: true
    autoconfigure: true

  phpDocumentor\Pipeline\Stage\Configure:
    tags:
      - { name: 'phpdoc.pipeline.application.configuration', priority: 10000 }

  phpDocumentor\Parser\Cache\Locator: ~

  phpDocumentor\Pipeline\Stage\TransformToPayload:
    tags:
      - { name: 'phpdoc.pipeline.application.configuration', priority: 9000 }

  phpDocumentor\Pipeline\Stage\InitializeBuilderFromConfig:
    tags:
      - { name: 'phpdoc.pipeline.application.configuration', priority: 8000 }

  ###################################################################################
  ## Autoloading definitions for cache stages       #################################
  ###################################################################################

  phpDocumentor\Pipeline\Stage\Cache\PurgeCachesWhenForced:
    arguments:
      $filesCache: '@files'
      $descriptorsCache: '@descriptors'
    tags:
      - { name: 'phpdoc.pipeline.application.configuration', priority: 7000 }

  phpDocumentor\Pipeline\Stage\Cache\LoadProjectDescriptorFromCache:
    tags:
      - { name: 'phpdoc.pipeline.api_documentation.parse', priority: 2000 }
      - { name: 'phpdoc.pipeline.api_documentation.transform', priority: 5000 }

  phpDocumentor\Pipeline\Stage\Cache\StoreProjectDescriptorToCache:
    tags:
      - { name: 'phpdoc.pipeline.api_documentation.parse', priority: -1000 }

  ###################################################################################
  ## Autoloading definitions for parser stages      #################################
  ###################################################################################

  phpDocumentor\Pipeline\Stage\Parser\TransformToParserPayload:
    tags:
      - { name: 'phpdoc.pipeline.api_documentation.parse', priority: 5000 }

  phpDocumentor\Pipeline\Stage\Parser\CollectFiles:
    tags:
      - { name: 'phpdoc.pipeline.api_documentation.parse', priority: 4000 }

  phpDocumentor\Pipeline\Stage\Cache\GarbageCollectCache:
    tags:
      - { name: 'phpdoc.pipeline.api_documentation.parse', priority: 3000 }

  phpDocumentor\Pipeline\Stage\Parser\ParseFiles:
    tags:
      - { name: 'phpdoc.pipeline.api_documentation.parse', priority: 0 }

  ###################################################################################
  ## Autoloading definitions for transform stages   #################################
  ###################################################################################

  phpDocumentor\Pipeline\Stage\Transform:
    tags:
      - { name: 'phpdoc.pipeline.api_documentation.transform', priority: 0 }
